A thin client is a client program or hardware device that relies on the server to provide most of the functionality of the system. Many thin clients, for example, are stateless objects that do not need to interpret or display objects beyond menus or plain text. Increasingly, thin client implementations of applications are being proposed in LAN and WAN-based environments. A thin client implementation allows for an efficient deployment and maintenance of an application. For traditional, full-featured clients, installation of a new application typically required physical installation on each user device. A thin client implementation of an application, on the other hand, allows for centralized deployment and maintenance. In addition, thin clients generally have fewer hardware demands.
Currently, most thin client applications employ J2EE (Java 2, Enterprise Edition) messaging protocols, such as Java Messaging Services (JMS). JMS, however, is designed to solve transaction-based architectures and is not an event driven model. Generally, a transaction-based server responds to client requests without significant time constraints. A server in an event driven model, however, often has fine-grained event generation demands. In particular, as a user takes an action to initiate an event, such as a keystroke or mouse click, the user expects the visual presentation of the application on the client device to update quickly. It has been found, however, that JMS cannot satisfy the time constraints and dependencies associated with many event driven client applications.
A need therefore exists for a messaging service that can satisfy the time constraints and dependencies associated with evolving event-driven client applications. A further need exists for methods and apparatus for maintaining state information in a highly event driven thin client environment.